SXSSF ব্যবহার করে Large Excel ফাইল ম্যানেজ করা

Advanced Features এবং Performance Optimization - অ্যাপাচি পিওআই (Apache POI) - Java Technologies

274

Apache POI লাইব্রেরি ব্যবহার করে আপনি Excel ফাইল তৈরি বা ম্যানেজ করতে পারেন, তবে বড় Excel ফাইল (যেমন কয়েক লাখ সেল সহ) তৈরি করার সময় সাধারণ XSSF ব্যবহার করলে মেমরি সমস্যার সম্মুখীন হতে পারেন। এ সমস্যা এড়াতে, Apache POI একটি উন্নত বিকল্প প্রদান করে যা হল SXSSF (Streaming XML Spreadsheet Format)। SXSSF হলো XSSF এর একটি উন্নত সংস্করণ, যা বৃহৎ ফাইল তৈরি এবং প্রক্রিয়া করার জন্য মেমরি-দক্ষ পদ্ধতি ব্যবহার করে।


SXSSF কি?

SXSSF একটি স্ট্রিমিং API, যা XSSF ফাইল লেখার সময় ডেটা রিড ও রাইট করার প্রক্রিয়ায় memory ব্যবস্থাপনা করে। এটি Excel ফাইল তৈরি বা লেখার সময় একযোগভাবে কেবলমাত্র বর্তমান রো (row) এবং সংশ্লিষ্ট ডেটা মেমরিতে রাখে, ফলে মেমরি ব্যবহার খুবই কম হয়। এর ফলে, আপনি বড় বড় Excel ফাইল তৈরি করতে সক্ষম হন যা সাধারণ XSSF API দিয়ে সম্ভব নয়।


SXSSF ব্যবহারের সুবিধা

  • Memory Efficiency: SXSSF শুধুমাত্র বর্তমান রো (row) মেমরিতে রাখে, পুরনো রো গুলি ডিস্কে লেখার পর মুছে ফেলা হয়।
  • Large File Handling: হাজার হাজার বা লাখ লাখ সেল থাকা Excel ফাইল সহজেই তৈরি করা যায়।
  • Performance: বড় ফাইল তৈরি করার সময় এটি সাধারণ XSSF এর তুলনায় দ্রুত কাজ করে।

1. SXSSF ব্যবহার করে Large Excel ফাইল তৈরি করা

এখানে একটি সাধারণ উদাহরণ দেখানো হচ্ছে, যেখানে SXSSF ব্যবহার করে একটি বড় Excel ফাইল তৈরি করা হয়েছে। আমরা ১ মিলিয়ন রো (row) এবং ১০টি কলাম ব্যবহার করব।

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class SXSSFExample {
    public static void main(String[] args) throws IOException {
        // SXSSFWorkbook তৈরি করা
        Workbook workbook = new SXSSFWorkbook(100);  // 100 rows in memory at a time

        // Sheet তৈরি করা
        Sheet sheet = workbook.createSheet("LargeDataSheet");

        // ডেটা যোগ করা
        for (int rowNum = 0; rowNum < 1000000; rowNum++) {
            Row row = sheet.createRow(rowNum);
            
            // প্রতিটি রো তে কিছু ডেটা ইনপুট করা
            for (int colNum = 0; colNum < 10; colNum++) {
                Cell cell = row.createCell(colNum);
                cell.setCellValue("Row " + rowNum + " Col " + colNum);
            }

            // প্রতি 100 রো পর পুরনো রো মুছে ফেলবে (garbage collect)
            if (rowNum % 100 == 0) {
                ((SXSSFWorkbook) workbook).flushRows();
            }
        }

        // Excel ফাইল সংরক্ষণ করা
        try (FileOutputStream fileOut = new FileOutputStream("large_excel_file.xlsx")) {
            workbook.write(fileOut);
        }

        // Workbook বন্ধ করা
        workbook.close();
    }
}

এই কোডে:

  • SXSSFWorkbook(100) ব্যবহার করা হয়েছে, যার মানে প্রতি 100 রো মেমরিতে থাকবে এবং পুরনো রো গুলি ফ্লাশ (flush) হবে।
  • প্রতি 100 রো পর পুরনো রো মুছে ফেলা হয়, যা মেমরি ব্যবস্থাপনায় সহায়তা করে।

2. SXSSF এর Key Methods

SXSSF কাজ করার জন্য কিছু গুরুত্বপূর্ণ মেথড রয়েছে:

  • flushRows(): এটি বর্তমান সেলে লেখা ডেটা ডিস্কে ফ্লাশ করে, এবং পুরনো রো গুলি মুছে ফেলে। এটি স্মৃতি (memory) অপটিমাইজ করতে সহায়তা করে।
  • getSheetAt(): নির্দিষ্ট Sheet পাওয়া যায়।
  • createSheet(): একটি নতুন শিট তৈরি করা হয়।

3. SXSSF এর সাথে Cell Style ব্যবহার

আপনি SXSSF এর সাথে cell styles বা formats ব্যবহার করতে পারবেন। উদাহরণস্বরূপ, আপনি date format, currency format বা font style যোগ করতে পারেন।

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFColor;

import java.io.FileOutputStream;
import java.io.IOException;

public class SXSSFWithStylesExample {
    public static void main(String[] args) throws IOException {
        // SXSSFWorkbook তৈরি করা
        Workbook workbook = new SXSSFWorkbook(100);

        // Sheet তৈরি করা
        Sheet sheet = workbook.createSheet("StyledSheet");

        // Cell Style তৈরি করা
        CellStyle style = workbook.createCellStyle();
        Font font = workbook.createFont();
        font.setBold(true);
        style.setFont(font);
        style.setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 255, 0)));
        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

        // ডেটা এবং স্টাইল ইনপুট করা
        for (int rowNum = 0; rowNum < 100000; rowNum++) {
            Row row = sheet.createRow(rowNum);

            for (int colNum = 0; colNum < 10; colNum++) {
                Cell cell = row.createCell(colNum);
                cell.setCellValue("Row " + rowNum + " Col " + colNum);
                cell.setCellStyle(style);
            }

            // প্রতি 100 রো পর পুরনো রো মুছে ফেলবে
            if (rowNum % 100 == 0) {
                ((SXSSFWorkbook) workbook).flushRows();
            }
        }

        // Excel ফাইল সংরক্ষণ করা
        try (FileOutputStream fileOut = new FileOutputStream("styled_large_excel_file.xlsx")) {
            workbook.write(fileOut);
        }

        // Workbook বন্ধ করা
        workbook.close();
    }
}

এখানে:

  • Bold Font এবং Yellow Background Color সহ একটি স্টাইল তৈরি করা হয়েছে, যা সেলগুলোর জন্য প্রযোজ্য।
  • flushRows() ব্যবহৃত হয়েছে যাতে মেমরি অপ্টিমাইজ করা যায়।

4. SXSSF এর Limitations

SXSSF কিছু সীমাবদ্ধতা থাকতে পারে, যেমন:

  • এটি শুধুমাত্র XSSF (XML-based) ফাইল ফরম্যাটে কাজ করে, অর্থাৎ HSSF (xls format) সাপোর্ট করে না।
  • এতে কিছু advanced features (যেমন charts বা pivot tables) সাপোর্ট নাও থাকতে পারে।

সারাংশ

SXSSF হল Apache POI এর একটি অত্যন্ত কার্যকরী উপায় যা large Excel files তৈরি করতে সক্ষম। এটি মেমরি ব্যবস্থাপনা করে এবং শুধুমাত্র প্রয়োজনীয় রো গুলি মেমরিতে রাখে, যা বড় বড় ফাইল হ্যান্ডলিংয়ের জন্য অত্যন্ত উপযোগী। SXSSF ব্যবহার করে আপনি বড় Excel ফাইল দ্রুত তৈরি করতে পারবেন, বিশেষ করে যখন আপনি হাজার হাজার রো ডেটা ইনপুট করছেন। তবে এর কিছু সীমাবদ্ধতা যেমন HSSF সাপোর্ট না করা এবং কিছু অ্যাডভান্সড ফিচারের অপ্রতিষ্ঠান থাকতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...